var express = require('express')
var bodyParser = require('body-parser')
var Todo = require('./todos')

// 配置 body-parser 中间件（专门用来处理 post 表单请求体）
var jsonParser = bodyParser.json()

var app = express()

//设置允许跨域访问该服务.
app.all('*', function(req, res, next) {
  res.header('Access-Control-Allow-Origin', '*')
  //Access-Control-Allow-Headers ,可根据浏览器的F12查看,把对应的粘贴在这里就行
  res.header('Access-Control-Allow-Headers', ['mytoken', 'Content-Type'])
  res.header('Access-Control-Allow-Methods', 'PUT,GET,POST,DELETE,OPTIONS')
  res.header('Content-Type', 'application/json;charset=utf-8')
  next()
})

app.get('/todolists', function(req, res) {
  Todo.find(function(err, lists) {
    if (err) return res.status(500).send('Server error')
    res.send(lists)
  })
})

app.post('/add', jsonParser, function(req, res) {
  new Todo(req.body.params).save(function(err, ret) {
    if (err) return res.status(500).send('Server Error')
    else {
      console.log('成功！')
    }
  })
})

app.delete('/del', function(req, res) {
  Todo.remove({ _id: req.query._id }, function(err, ret) {
    if (err) return res.status(500).send('Server Error')
    else {
      console.log('删除成功')
    }
  })
})

app.delete('/clearDone', function(req, res) {
  Todo.remove({ done: true }, function(err, ret) {
    if (err) return res.status(500).send('Server Error')
    else {
      console.log('删除成功')
    }
  })
})

app.post('/refresh', jsonParser, function(req, res) {
  var arr1 = req.body.params
  var idArr = []
  Reflect.ownKeys(arr1).forEach(key => {
    idArr.push(arr1[key]._id)
  })
  for (var i = 0; i < idArr.length; i++) {
    Todo.findOneAndUpdate({ _id: idArr[i] }, { done: true }, function(
      err,
      ret
    ) {
      if (err) console.log(err)
      else {
        console.log('更新成功')
      }
    })
  }
})

app.get('/undone', function(req, res) {
  console.log(req.query)
  Todo.find(req.query, function(err, ret) {
    if (err) return res.status(500).send('Server Error')
    else {
      res.send(ret)
    }
  })
})

app.get('/done', function(req, res) {
  Todo.find(req.query, function(err, ret) {
    if (err) return res.status(500).send('Server Error')
    else {
      res.send(ret)
    }
  })
})

app.listen(3000, function(err) {
  console.log('running...')
})
